#define SYPHON_CONCAT(x, y) SYPHON_CONCAT_EXPANDED(x, y)
#define SYPHON_CONCAT_EXPANDED(x, y) x ## y
#define SYPHON_SYMBOL_FROM_CLASS_NAME(NAME) SYPHON_CONCAT(.objc_class_name_, NAME)

#ifdef SYPHON_UNIQUE_CLASS_NAME_PREFIX
	#define SYPHON_UNIQUE_CLASS_NAME(CLASS_NAME) SYPHON_CONCAT(SYPHON_UNIQUE_CLASS_NAME_PREFIX, CLASS_NAME)
	#define SYPHON_UNIQUE_CLASS_SYMBOL(CLASS_NAME) SYPHON_SYMBOL_FROM_CLASS_NAME(SYPHON_UNIQUE_CLASS_NAME(CLASS_NAME))
	#define SYPHON_USE_CLASS_ALIAS
#else
	#define SYPHON_UNIQUE_CLASS_NAME(CLASS_NAME) CLASS_NAME
	#define SYPHON_UNIQUE_CLASS_SYMBOL(CLASS_NAME) SYPHON_SYMBOL_FROM_CLASS_NAME(CLASS_NAME)
#endif

#ifndef SYPHON_UNUSED
#define SYPHON_UNUSED(x) (void)x
#endif
